<?php  
require_once('../zAPI/properties.inc.php');
require_once( ROOT_CLASS . 'Kernel.class.php');
require_once( $kernel->getClass("Util") );
require_once( $kernel->getClass("BusinessObject") );
require_once( ROOT_CLASS . 'DataObject/FornecedorDO.class.php');
require_once( ROOT_CLASS . 'DataObject/PessoaDO.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');
require_once( ROOT_CLASS . 'zAccess/zAccess.class.php' );
?>

<?php 
 class FornecedorController{
 	 	
 	function __construct(){
		$AccessAction = new AccessAction();
		$AccessAction->validSessionUsuario();
    }
 	
 	function listarFornecedores($instanceDB, $postRequest, $getRequest){
 		
	 	$limit = $_POST["limit"]; // varíável usada para controlar o limite de paginação
		$start = $_POST["start"]; // varíável usada para controlar o início de paginação
		$filter = $_POST["query"];
		
		$fornecedorBO = new FornecedorBO();
		
		$result = $fornecedorBO->listarFornecedores($instanceDB, $limit, $start, $filter);
		
		$retorno = "{";
			$retorno .= "success:true,";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result["object"]); $i++){
				$dados .= $aux . utf8_encode( $result["object"][$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "results:".$result["qtdRegistros"].",";
			$retorno .= "message:'Fornecedores listados com sucesso',";
			$retorno .= "elements:[" . $dados . "]";
		$retorno .="}";
		
		return $retorno;
 		
 	}
 	
 	function inserir($instanceDB, $postRequest, $getRequest){
 		
	 	$fornecedorBO = new FornecedorBO();
		$pessoaBO = new PessoaBO();
		
		$fornecedorDO = new FornecedorDO();
		$pessoaDO = new PessoaDO();
		
		$fornecedorDO->loadDataObjectByPost( $_POST, TRUE );
		$pessoaDO->loadDataObjectByPost( $_POST, TRUE );
		
		$result = $pessoaBO->inserir($instanceDB, $pessoaDO);
		$fornecedorDO->set("Pessoa_codigo", $result->get("codigo"));
		
		$result = $fornecedorBO->inserir($instanceDB, $fornecedorDO);
		
		if ( $result === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível inserir as informações.'";
			$retorno .= "}";
		} else {
			$retorno .= "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Inserido com com sucesso!',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result); $i++){
				$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
			$retorno .= "}";
 		}
 		
 		return $retorno;
 	}
 	
 	
 	function excluir($instanceDB, $postRequest, $getRequest){
 		
	 	$fornecedorBO = new FornecedorBO();
		$pessoaBO = new PessoaBO();
		
		$fornecedorDO = new FornecedorDO();
		$pessoaDO = new PessoaDO();
		
		$codigoFornecedor = $_POST["codigoFornecedor"];
		$pessoaDO->set( "codigo", $codigoFornecedor );
		$fornecedorDO->set( "Pessoa_codigo", $codigoFornecedor );
		
		$resultadoPessoa = $pessoaBO->excluir( $instanceDB, $pessoaDO );
		$resultadoFornecedor = $fornecedorBO->excluir( $instanceDB, $fornecedorDO );
		
		if ( $resultadoPessoa === FALSE || $resultadoFornecedor === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível excluir o registro.'";
			$retorno .= "}";
		}else {
			$retorno .= "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Excluído com sucesso!'";
			$retorno .= "}";
	 		
 		}
 		
 		return $retorno;
 	}
 	
 	function alterar($instanceDB, $postRequest, $getRequest){
 		
	 	$fornecedorBO = new FornecedorBO();
		$pessoaBO = new PessoaBO();
		
		$fornecedorDO = new FornecedorDO();
		$pessoaDO = new PessoaDO();
		
		$fornecedorDO->loadDataObjectByPost( $_POST, TRUE );
		$pessoaDO->loadDataObjectByPost( $_POST, TRUE );
	
		
		$resultadoPessoa = $pessoaBO->alterar( $instanceDB, $pessoaDO );
		$resultadoFornecedor = $fornecedorBO->alterar( $instanceDB, $fornecedorDO );
			
		if ( $resultadoPessoa === FALSE || $resultadoFornecedor === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível alterar o registro.'";
			$retorno .= "}";
		}else {
			$retorno .= "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Alterado com sucesso!'";
			$retorno .= "}";
		}

		return $retorno;
	 }
 }

?>